#include <signal.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

// volatile 表示去真正存放值的地址中去取值，不要轻易相信内存空间的值
static volatile int loop = 1;

static void alrm_handler()
{
	// 接收到SIGALRM信号后，将loop标志置为false
	loop = 0;
}

int main()
{

	// 接收到信号后，触发函数指针
	signal(SIGALRM, alrm_handler);
	/*
	 * 重要说明：alarm必须在signal之后，否则signal无效
	 * */
	// 5s 后触发SIGALRM信号
	alarm(5);

	int64_t count = 0;

	while (loop) {
		count++;
	}
	// 使用gcc -O1参数，可以进一步优化程序	
	printf("----count: %ld \n", count);

	exit(0);
}
